﻿Imports System.Data 


Public Class CServiciosGenerales

Public Function ValidarAccesoParaUsuario(ByVal usuario As String, ByVal password As String) As Boolean 

Try  
            If CServiciosMacrosSyBaseDB.ValidarAccesoUsuario (usuario, password) then 

                Return True
            Else    
                Return False
            End If

        Catch ex As Exception
            Throw ex
        End Try


End Function

Public Function ObtieneDatosUsuario(ByVal strClaveDECALOG As String) As DataTable
    Return CServicioLocalSQLServerDB.ObtieneDatosUsuario(strClaveDECALOG)
End Function

Public Function ObtenerAreasFuncionesXUsuario(ByVal usuarioDec As String) As List(Of CAreaFuncion)

 Dim lst As new List(Of CAreaFuncion)  
 Dim dt As DataTable 

 Try
       
     dt = CServicioLocalSQLServerDB.ObtenerFuncionesXUsuario (usuarioDec) 
     For Each registro As DataRow In dt.Rows 
         lst.Add (New CAreaFuncion (registro))
     Next     
     Return lst
 Catch ex As Exception
   Return Nothing 
 End Try
 

End Function

Public Function ObtenerSigFechaNoLab(ByVal fechaHoy As Date, ByRef lstFecNoLab As List(Of CFechaNoLab )) As Date 

Try
     Dim fechasig As Date = fechaHoy.AddDays (1).ToShortDateString 
 
     While not lstFecNoLab.Find ( Function (x) x.Fechanolab = fechasig  ) is nothing 
         fechasig = fechasig.AddDays (1)
     End While 

     Return fechasig
Catch ex As Exception
     Throw ex
End Try

End Function

Public Function ObtenerFechasNoLab(ByVal idFuncionalidad As Integer ) As List(Of CFechaNoLab )

 Dim dt As DataTable 
 Dim lst As new List(Of CFechaNoLab)


 Try
    
     dt = CServicioLocalSQLServerDB.ObtenerFechasNoLab (idFuncionalidad)  

     For Each registro As DataRow  In dt.Rows           
         lst.Add(New CFechaNoLab(registro("fecha")))         
     Next
             
 Catch ex As Exception
    Throw ex
 End Try
 
 Return lst

Return Nothing 

End Function

Public function ObtenerFechaActual() As Date 
        Try
              return  CServiciosMacrosSyBaseDB.FechaHoyDB () 
        Catch ex As Exception
           return Date.Now  
        End Try
        
End Function

Public function EjecutarProceso (ByVal comando As String, ByVal argumentos As String, ByVal funcionalidad As String) As Boolean 
        Dim proceso As New Process()
        Dim idRegBit As Integer  

        Try
            proceso.EnableRaisingEvents = True
            proceso.StartInfo.FileName = comando
            proceso.StartInfo.Arguments = argumentos
            proceso.Start()
            idRegBit = CUtileria.GrabarBitacora(funcionalidad, "T-Loader", "Se envía el archivo al T-Loader, proceso ID: " & proceso.Id)
            proceso.Close()
            CUtileria.CompletarRegBitacora(idRegBit)
            
            Return True  

        Catch ex As Exception
             idRegBit =  CUtileria.GrabarBitacora (funcionalidad,"T-Loader",ex.Message )
             CUtileria.CompletarRegBitacora (idRegBit)  
             Return false
        End Try    
End Function 


Public Function ObtenerPREFIJOARCHIVO() As String 
  Dim dt As DataTable  
  dt = ObtieneDatosUsuario (CServiciosMacrosSyBaseDB.USUARIO) 
       
  If not dt is Nothing then 
     If dt.Rows.Count  > 0 then         
           Return   CServicioLocalSQLServerDB.PREFIJO_USUARIO & dt.Rows(0)("ID").ToString () &  "_"
     else
           Return CServicioLocalSQLServerDB.PREFIJO_USUARIO & "0_"
     End If
   else
     Return CServicioLocalSQLServerDB.PREFIJO_USUARIO & "0_"
  End If
    
End Function

    Public Function ObtieneUsuarios(ByVal IdUsuario As Integer) As List(Of CUsuario)
        Dim dtDatos As DataTable = CServicioLocalSQLServerDB.ObtieneUsuarios(IdUsuario)
        Dim lstUsuarios As New List(Of CUsuario)
        Dim j As CUsuario

        If dtDatos.Rows.Count > 0 Then
            For Each dt As DataRow In dtDatos.Rows
                j = New CUsuario()
                With j
                    .Id = Convert.ToInt32(dt(0))
                    .Clave = dt(1).ToString
                    .Nombre = dt(2).ToString
                    .Nuevo = False
                    .Estatus = dt(3).ToString
                    .Activo = Convert.ToBoolean(dt(4))
                End With
                lstUsuarios.Add(j)
                j = Nothing
            Next
        End If

        Return lstUsuarios
    End Function

    Public Function ObtieneAreas() As List(Of CArea)
        Dim dtDatos As DataTable = CServicioLocalSQLServerDB.ObtieneAreas()
        Dim lstAreas As New List(Of CArea)
        Dim j As CArea

        If dtDatos.Rows.Count > 0 Then
            For Each dt As DataRow In dtDatos.Rows
                j = New CArea()
                With j
                    .Id = Convert.ToInt32(dt(0))                    
                    .Nombre = dt(1).ToString
                End With
                lstAreas.Add(j)
                j = Nothing
            Next
        End If

        Return lstAreas
    End Function

    Public Function ValidarExistenciaUsuarioDECALOG(ByVal usuario As String) As CUsuario
        Dim dtDatos As DataTable = CServiciosMacrosSyBaseDB.ValidarExistenciaUsuarioDECALOG(usuario)

        If dtDatos.Rows.Count = 1 Then
            Dim usu As New CUsuario()

            usu.Clave = dtDatos.Rows(0)(0).ToString()
            usu.Nombre = dtDatos.Rows(0)(1).ToString()

            Return usu
        Else
            Return Nothing
        End If
    End Function

    Public Function ObtieneFunciones() As DataTable
        Return CServicioLocalSQLServerDB.ObtieneFunciones()
    End Function

    Public Function ObtieneFuncionesUsuario(ByVal IdUsuario As Integer) As DataTable
        Try
            Dim intBitacora As Integer = CUtileria.GrabarBitacora("Usuarios", "Funciones actuales", "Busca las funciones actuales del usuario con id " & IdUsuario)

            Dim dtDatos As DataTable = CServicioLocalSQLServerDB.ObtieneFuncionesUsuario(IdUsuario)

            CUtileria.CompletarRegBitacora(intBitacora)

            Return dtDatos
        Catch ex As Exception
            Dim intBError As Integer = CUtileria.GrabarBitacora("Usuarios", "Funciones actuales", ex.Message)

            CUtileria.CompletarRegBitacora(intBError)

            Return Nothing
        End Try
    End Function

    Public Function InsertaUsuario(ByVal usuario As CUsuario, ByVal dtfunciones As DataTable, ByVal Activo As Boolean) As Integer
        Return CServicioLocalSQLServerDB.InsertaUsuario(usuario, dtfunciones, Activo)
    End Function

    Public Function ActualizaUsuario(ByVal usuario As CUsuario, ByVal dtFunciones As DataTable, ByVal Activo As Boolean) As Integer
        Return CServicioLocalSQLServerDB.ActualizaUsuario(usuario, dtFunciones, Activo)
    End Function

    Public Function EliminaUsuario(ByVal usuario As CUsuario) As Boolean
        Return CServicioLocalSQLServerDB.EliminaUsuario(usuario)
    End Function

    Public Function ValidarAltaUsuario(ByVal usuario As String) As Boolean
        Return CServicioLocalSQLServerDB.ValidarAltaUsuario(usuario)
    End Function

    Public Function ValidarExistenciaDeSesion(ByVal usuario As String) As CServicioLocalSQLServerDB.strucDatosDeSesion  
           Try
                Return CServicioLocalSQLServerDB.ObtenerDatosSesion (usuario) 
           Catch ex As Exception
              Throw ex
           End Try
     End Function

     Public Function ValidarExistenciaDeSesion(ByVal id As Integer, ByVal usuario As String) As CServicioLocalSQLServerDB.strucDatosDeSesion  
           Try
                Return CServicioLocalSQLServerDB.ObtenerDatosSesion (id,usuario) 
           Catch ex As Exception
              Throw ex
           End Try
     End Function

     Public Function ObtenerUsuarioDecalog(ByVal pUsuRed As String, ByRef sMsgError As String) As String 
          Dim usuDec As String = CServicioLocalSQLServerDB.ObtenerUsuDecalogConUsuRed (pUsuRed,sMsgError )                    
          Return usuDec        
     End Function




    Public Function EliminarSesionActiva(ByVal id As Integer, ByVal usuario As String, ByRef sMsgError As String ) As Boolean
        Return  CServicioLocalSQLServerDB.EliminarSesion (id,usuario,sMsgError) 
    End Function

    Public Function AltaSesion(ByVal usuario As String, ByRef sMsgError As String ) As Boolean
        Return  CServicioLocalSQLServerDB.AltaDeSesion (usuario,sMsgError )
    End Function

    Public Function ObtieneSegundosEspera() As Integer
        Return CServicioLocalSQLServerDB.ObtieneSegundosEspera()
    End Function

    Public Function ObtieneCamposValmer() As List(Of CCampoValmer)
        Dim dtDatos As DataTable = CServicioLocalSQLServerDB.ObtieneCamposValmer()
        Dim lstCamposValmer As New List(Of CCampoValmer)
        Dim c As CCampoValmer

        If dtDatos.Rows.Count > 0 Then
            For Each dr As DataRow In dtDatos.Rows
                c = New CCampoValmer()

                With c
                    .Id = Convert.ToInt32(dr(0))
                    .Nombre = dr(1).ToString()
                    .PosicionBancarios = Convert.ToString(dr(2))
                    .PosicionGubernamental = Convert.ToString(dr(3))
                    .PosicionCorporativos = Convert.ToString(dr(4))
                    .PosicionNotas = Convert.ToString(dr(5))
                    .PosicionVector = Convert.ToString(dr(6))
                End With

                lstCamposValmer.Add(c)

                c = Nothing
            Next
        End If

        Return lstCamposValmer
    End Function

    Public Function GuardaCamposValmer(ByVal Cadena As String, ByVal IdUsuario As Integer) As Boolean
        Return CServicioLocalSQLServerDB.GuardaCamposValmer(Cadena, IdUsuario)
    End Function


End Class
